#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QImage>
#include <QPainter>
#include <QString>
#include <QList>
#include <QDir>
#include <QDialog>
#include <QFileDialog>
#include <QMessageBox>
#include <QTextStream>
#include <QLineEdit>
#include <QDebug>
#include "fuente.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    orden = 1;
    ui->setupUi(this);    
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::drawA(){
    QImage imagen1;
    QString file = QFileDialog::getOpenFileName(this,
                                     tr("Open File"), QDir::currentPath());
     if (!file.isEmpty()) {
        imagen1.load(file);
         if (imagen1.isNull())
             QMessageBox::information(this, tr("Image Viewer"),
                                      tr("Cannot load %1.").arg(file));

     }
    imagen=imagen1;
    this->repaint();
}

void MainWindow::on_pushButton_clicked()
{
    this->drawA();
    ui->imageLabel->setBackgroundRole(QPalette::Base);
    QPixmap mapa;
    mapa = QPixmap::fromImage(imagen);
    mapa = mapa.scaled(471, 271, Qt::KeepAspectRatio);
    ui->imageLabel->setPixmap(mapa);
    fu = new Fuente(imagen);
}

void MainWindow::on_botonExtender_clicked()
{
    this->orden = ui->lineEdit->text().toInt();
    QByteArray ba = QFileDialog::getSaveFileName(this,tr("Guardar archivo de la extensión"), QDir::currentPath()).toLatin1();
    char * path =ba.data();

    fu->extender(orden);
    fu->guardarExt(path);

    //qDebug()<< fu->getSizeProba();
    qDebug() << "H(S) = " << fu->entropia();
    qDebug() << "H1(S) = " << fu->entropia1();


}

void MainWindow::on_pushButton_2_clicked()
{
    QByteArray ba = QFileDialog::getSaveFileName(this, tr("Guardar archivo de codificación"), QDir::currentPath()).toLatin1();
    char * path =ba.data();
    fu->codecSource(path);
    fu->decodec(path);
    imagen = fu->getImagen();
    repaint();

}

void MainWindow::on_pushButton_3_clicked()
{

    qDebug() << "media long" << fu->mediaLong();

}
